﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace AlgorithmTest
{
    // T_[四个数字排序]_[算法名]
    public class T_0111_CountElements : IAlgorithm
    {
        // 2148. 元素计数

        // 给你一个整数数组 nums ，统计并返回在 nums 中同时具有一个严格较小元素和一个严格较大元素的元素数目。

        // 提示：
        //  1 <= nums.length <= 100
        //  -10^5 <= nums[i] <= 10^5

        public void Test()
        {
            // 算法参数定义
            var nums = new int[] { 11, 7, 2, 15 };
            // 算法执行与打印
            Console.WriteLine(CountElements(nums));
        }

        // 算法
        public int CountElements(int[] nums)
        {
            if (nums.Length < 3)
                return 0;
            Array.Sort(nums);
            int l = 1, r = nums.Length - 2;
            while (l <= r)
                if (nums[l] == nums[l - 1] || nums[r] == nums[r + 1])
                    if (nums[l] == nums[l - 1])
                        l++;
                    else
                        r--;
                else
                    break;
            if (r < l)
                return 0;
            else
                return r - l + 1;
        }
    }
}
